<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>回顾Objectdefineproperty</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <!-- 
        1、Vue中的数据代理：
            通过vm对象来代理data对象中属性的操作(读/写)
        2、Vue中数据代理的好处：
            更加方便操作data中的数据
        3、基本原理：
            通过Object.defineproperty()把data对象中所有属性添加到vm上。
            为每一个添加到vm上的属性，都指定一个getter/setter。
            在getter/setter内部去操作(读/写)data中对应的属性。
     -->
    <div class="app">
        <p>{{name}}</p>
        <p>{{addr}}</p>
    </div>
    <script type="text/javascript">
        //new Vue(options)
        const vm = new Vue({
            data() {
                return {
                    name: '测试',
                    addr: '上海市'
                }
            }
        })
        vm.$mount('.app')

        //1、控制台打印  vm.name 回车 【控制台】反馈 “测试”。 执行了getter()去读data.name
        //2、控制台打印  vm.name="测试123" 回车 【页面】反馈 “测试123”。 执行了setter()修改data.name。验证vm._data.name
    </script>
</body>

</html>